為什么使用容器與虛擬機?
虛擬機 (VM) 和容器是互補且相似的 - 兩者都提高了 IT 效率、應(yīng)用程序可移植性并增強了 DevOps。但是,了解它們之間的區(qū)別是開發(fā)敏捷、云原生、應(yīng)用程序驅(qū)動戰(zhàn)略的關(guān)鍵組成部分。
- VM通過讓組織充分利用服務(wù)器并促進有限的工作負載可移植性來解決基礎(chǔ)架構(gòu)問題。
- 容器通過改進DevOps、啟用微服務(wù)、增加可移植性和進一步提高資源利用率來解決應(yīng)用程序問題。
容器和虛擬機的核心區(qū)別是什么?
VM 包括客戶操作系統(tǒng) (OS) 及其應(yīng)用程序和應(yīng)用程序依賴項的所有代碼,這些代碼以前在單個服務(wù)器上或從服務(wù)器池中運行。VM 映像的大小通常以千兆字節(jié)為單位。多個 VM 可以存在于單個物理服務(wù)器上,即使它們運行在不同的操作系統(tǒng)上。虛擬機從底層硬件中抽象出服務(wù)器,并且通常會在其整個使用壽命期間持續(xù)存在。
容器共享主機操作系統(tǒng)并且僅包含應(yīng)用程序及其依賴項。容器映像的大小通常以兆字節(jié)為單位。在單個服務(wù)器上運行的每個容器都共享相同的底層操作系統(tǒng)。因此,容器可以在幾毫秒內(nèi)啟動,并且對于實例必須隨著需求的變化而啟動和關(guān)閉的臨時用例更有效。
總而言之,VM 和容器有何不同?
盡管容器和虛擬機都有助于提高 IT 資源的利用率,但各有利弊。虛擬機已經(jīng)存在了幾十年,它允許企業(yè)將運行不同應(yīng)用程序的多臺服務(wù)器組合到單個物理服務(wù)器上,即使它們運行不同的操作系統(tǒng)。這大大節(jié)省了服務(wù)器硬件和軟件,因為過去在多臺服務(wù)器上運行的現(xiàn)在運行在單個服務(wù)器上。虛擬機也是大多數(shù)云服務(wù)的基礎(chǔ)。AWS、Azure 和其他公共云使用 VM 作為其標(biāo)準(zhǔn)產(chǎn)品之一。但是,由于它們將整個服務(wù)器封裝在每個虛擬機中,VM 所需的 CPU 和 RAM 量可能會變得笨拙,并限制單個服務(wù)器上可以存在的 VM 數(shù)量。
自 2013 年 Docker 發(fā)布以來,容器迅速普及,部分原因是為了應(yīng)對虛擬機消耗的大量開銷。由于容器運行在服務(wù)器的操作系統(tǒng)上,它們共享單個操作系統(tǒng)實例和其他二進制文件和庫,因此容器只需要包含應(yīng)用程序代碼,無論是單個單體應(yīng)用程序的形式,還是捆綁在一個或多個容器中的微服務(wù)的形式,包含業(yè)務(wù)功能。
因此,雖然 VM 讓組織可以在單個硬件上運行多個虛擬服務(wù)器——不管它們的操作系統(tǒng)如何,容器提供了輕量級、高密度的應(yīng)用程序虛擬化,能夠在幾秒鐘內(nèi)啟動和關(guān)閉應(yīng)用程序和實例,以及一些措施在它們自己的容器中分離應(yīng)用程序所固有的安全性。
虛擬化的優(yōu)缺點是什么?
虛擬機優(yōu)點:
- 數(shù)十年的虛擬化專業(yè)知識支持訪問一組強大的 VM 管理和安全工具
- VM 提供了在單個基礎(chǔ)架構(gòu)上運行需要不同操作系統(tǒng)的多個應(yīng)用程序的能力
- VM 模擬整個計算環(huán)境,包括所有操作系統(tǒng)資源
- VM 簡化了本地和基于云的平臺之間的可移植性和遷移
- 有一個龐大的、成熟的 VM 生態(tài)系統(tǒng)和市場,其中包括 VMware 等行業(yè)領(lǐng)導(dǎo)者
虛擬機缺點:
- VM 映像通常消耗千兆字節(jié),因此需要更長的時間來備份或在平臺之間遷移
- 因為它們封裝了包括操作系統(tǒng)在內(nèi)的整個服務(wù)器,所以物理服務(wù)器可以支持比容器更少的虛擬機
- 虛擬機啟動時間可能需要幾分鐘
容器的優(yōu)缺點是什么?
容器優(yōu)點:
- 容器比虛擬機更輕量級,因為它們的圖像以兆字節(jié)而不是千兆字節(jié)為單位
- 容器需要更少的 IT 資源來部署、運行和管理
- 容器在幾毫秒內(nèi)啟動
- 由于它們的數(shù)量級較小
- 與虛擬機相比,單個系統(tǒng)可以托管更多的容器
容器缺點:
- 所有容器必須在相同的操作系統(tǒng)上運行——不能混合和匹配操作系統(tǒng)或版本
- 容器可能不如虛擬機安全,因為底層操作系統(tǒng)是共享的
- 容器是一項較新的技術(shù),生態(tài)系統(tǒng)仍在不斷發(fā)展
傳統(tǒng)與新興 IT 實踐中如何使用容器?
虛擬機已經(jīng)并將繼續(xù)在將遺留應(yīng)用程序遷移到云和混合環(huán)境中發(fā)揮作用。由于 VM 的成熟度,對于那些已經(jīng)融入圍繞 VM 的 IT 架構(gòu)的組織而言,它們具有很高的舒適度以及水平或慣性。因此,VM 將繼續(xù)成為許多持久的、單一的、企業(yè)應(yīng)用程序的首選抽象解決方案,尤其是那些不經(jīng)常更新的應(yīng)用程序。
但是,容器適合現(xiàn)代實踐和用例,例如敏捷、DevOps 環(huán)境中的 CI/CD。容器增強了應(yīng)用程序在截然不同的配置之間的可移植性,因此在筆記本電腦上開發(fā)并在沙盒中測試的應(yīng)用程序可以在云中運行,無需進行任何更改即可支持所有三種環(huán)境。容器還提供近乎無限的可擴展性。將用戶交互與后端處理分開的基于微服務(wù)的應(yīng)用程序允許前端和后端分別擴展,而輕量級容器意味著幾乎可以根據(jù)需要即時啟動新實例。此外,采用微服務(wù)方法進行開發(fā)鼓勵在多個應(yīng)用程序和業(yè)務(wù)流程之間共享通用的微服務(wù)例程,從而進一步提高開發(fā)人員的效率。
虛擬機在新興 IT 實踐中的角色如何轉(zhuǎn)變?
隨著機器學(xué)習(xí)和人工智能 (ML/AI) 應(yīng)用程序深入企業(yè),這些資源密集型應(yīng)用程序?qū)⒂欣诓渴鹛摂M機。此外,需要更多邊緣計算能力的新網(wǎng)絡(luò)架構(gòu)(如 5G)將有利于虛擬機來完成這些軟件定義網(wǎng)絡(luò)的繁重工作。
容器將在需要可擴展性的現(xiàn)代、面向客戶的應(yīng)用程序和 Web 服務(wù)的世界中茁壯成長,這要歸功于其近乎瞬時的啟動時間,并且容器作為開發(fā)平臺超越了,因為編碼人員不再需要擔(dān)心如何開發(fā)基礎(chǔ)設(shè)施因部署基礎(chǔ)設(shè)施而異。最后,由于容器最初設(shè)計為瞬態(tài)的,因此它們很適合網(wǎng)絡(luò)守護程序、緩存和 Web 服務(wù)功能。
容器會取代虛擬機,還是相互補充?
容器和虛擬機都將繼續(xù)發(fā)揮重要作用。容器可以在虛擬機上運行,??使組織能夠利用其現(xiàn)有工具進行自動化、備份和監(jiān)控。VM 上的容器使 IT 能夠使用現(xiàn)有的精通 VM 的團隊來管理容器化環(huán)境。隨著企業(yè)尋求以新的方式利用其基礎(chǔ)架構(gòu)或云的力量來支持重型應(yīng)用程序和網(wǎng)絡(luò)工作負載,虛擬機將擁有新的用例。